﻿using System;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Web.UI.WebControls;
using ApplicationGenerator.CommonModule;


namespace ApplicationGenerator.Forms.WebControls
{
    /// <summary>
    /// Bazowa klasa dla wszystkich kontrolek używanych w module formularzy
    /// </summary>
    [DefaultProperty("BussinessId")]
    [Serializable]
    public abstract class BaseControl : IValidation
    {
        #region Properties

        /// <summary>
        /// Biznesowa nazwa kontrolki. Dla celów czysto informacyjnych
        /// </summary>
        [Category("Podstawowe dane")]
        [DisplayName("Nazwa biznesowa")]
        [Description("Biznesowa nazwa kontrolki")]
        public string BussinessId
        {
            get;
            set;
        }

        /// <summary>
        /// Kontrolka webowa powiązana z daną kontrolką
        /// </summary>
        public abstract WebControl Control
        {
            get;
        }

        #endregion

        #region IValidation Members

        /// <summary>
        /// Waliduje encję
        /// </summary>
        /// <param name="errorList">Lista błędów</param>
        /// <returns>Czy encja jest poprawna ?</returns>
        public virtual bool IsValid(ErrorEntity errorList)
        {
            errorList.ControlName = this.GetType().Name;
            if (string.IsNullOrEmpty(BussinessId))
            {
                errorList.ErrorStrings.Add("Należy podać nazwę biznesową kontrolki");
                return false;
            }

            return true;
        }

        #endregion
    }
}
